home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
151-175
/
disk_156
/
flex
/
flex2
/
gnu.lib.src
/
realloc.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-05-06
|
1KB
|
67 lines
/*
* realloc() -- re-size the block of storage pointed to by 'root'
* to 'new_size' (in bytes). The old values are copied
* into the new space, up to the smaller of the two.
*
* Author: Scott Henry, 22 Feb 88
*/
#ifndef NULL
#define NULL ((void *)0)
#endif
struct mem {
struct mem *next;
long size;
};
void *
realloc( root, new_size)
register unsigned char *root;
register unsigned int new_size;
{
extern unsigned char *malloc();
register struct mem *mp;
register unsigned char *ptr;
register long old_size;
register unsigned int i;
if (root == NULL)
{
return( new_size > 0 ? malloc( new_size) : NULL);
}
if (new_size <= 0)
{
free( root);
return (NULL);
}
#ifdef AZTEC_C
mp = (struct mem *)root -1;
old_size = mp->size;
if ((ptr = malloc( new_size)) == NULL)
{
return NULL;
}
for (i=0; i<old_size && i<new_size; ++i)
{
ptr[i] = root[i];
}
for (i=old_size; i<new_size; ++i)
{
ptr[i] = '\0';
}
if (free( root) != 0)
{
free( ptr);
return NULL;
}
return ptr;
#else
I haven't taken the time to make this work under Lattice
(since I don't have it), so you are on your own, here. If
you do make it work, please send the fix back to me.
#endif
}